在 Day17 中,我們學會了如何將模型 API 整合到應用程式。接下來的挑戰,是如何讓模型「說出我們想要的答案」。這就需要用到 Prompt Engineering(提示工程)。
Prompt Engineering 並不只是「下指令」,而是 設計輸入,讓 AI 輸出結果更符合需求。
角色設置 (Role Prompting)
你是一位資深資料科學家,請用簡單的方式解釋 PCA 的概念。
逐步推理 (Chain-of-Thought Prompting)
請逐步解釋如何計算 24 * 17,最後再給出答案。
少樣本學習 (Few-Shot Prompting)
將句子翻譯成英文:
輸入:我愛程式設計
輸出:I love programming
輸入:今天天氣很好
輸出:
結構化輸出 (Structured Output)
請將以下商品資訊整理成 JSON:
商品:iPhone 15
價格:NT$38,900
輸出格式:
{
"name": "",
"price": ""
}
項目 | Azure AI Foundry | Vertex AI |
---|---|---|
Prompt 測試介面 | Playground,可即時測試 Prompt 效果 | Generative AI Studio,提供範例與測試介面 |
Prompt 模板化 | 支援 Prompt Flow,能將 Prompt 設計流程化 | 支援 Prompt Template,並可在 Notebook 中重複使用 |
最佳化工具 | Token 計算、版本管理 | 評估指標(BLEU、ROUGE)、A/B 測試 |
應用整合 | 可直接部署至 API Endpoint | 可透過 Vertex AI API 呼叫,或結合 LangChain |
import openai
response = openai.ChatCompletion.create(
engine="gpt-35-turbo",
messages=[
{"role": "system", "content": "你是一位英文翻譯專家。"},
{"role": "user", "content": "請將以下文字翻譯成英文:我喜歡資料科學"}
]
)
print(response['choices'][0]['message']['content'])
from vertexai.language_models import ChatModel
chat_model = ChatModel.from_pretrained("chat-bison")
chat = chat_model.start_chat()
response = chat.send_message("你是一位英文翻譯專家,請將以下文字翻譯成英文:我喜歡資料科學")
print(response.text)
在 Day18,我們學會了 Prompt Engineering 的關鍵技巧,讓 AI 不只是輸出「某種答案」,而是「符合需求的答案」。
角色設置:讓 AI 代入特定專業背景
逐步推理:提升邏輯性與正確率
少樣本學習:快速定義輸出風格
結構化輸出:方便程式解析